import os
from config.config import today_date, need_path, completed_path, logger
from processing.doc_docx import doc2docx, docx2doc

'''
【功能】
用来实现doc与docx互转的一个程序

【特色】
可穿透指定路径下的所有文件，对找到的所有word文档进行操作
并把结果输出到指定路径中


【原理】
在 Windows 操作系统上使用 Python 的 win32com.client 库(允许Python脚本与Windows的COM接口进行交互)
来操作 Microsoft Word 应用程序，以实现 .doc 文件和 .docx 文件之间的转换


【注意事项】
必须在 Windows 系统上运行
电脑里必须有 Microsoft Office 
请确认没有同名文件，否则文件会覆盖
'''


# 在 SaveAs 方法中，第二个参数代表的是 Word 文件的保存格式
# 0: Word 97 - 2003 文档 (.doc)
# 1: Word 97 - 2003 模板 (.dot)
# 12: Word 2007+ 文档 (.docx)
# 16: Word 2007+ 文档 (.docx)


# 获取指定路径下的所有word文件
# 可以穿透指定路径下的所有文件
def getfile():
    word_path = input(f'【一、获取文件路径】\n\t请输入word文档所在绝对路径\n\t或者按下回车键，我将默认获取此项目的 document\\{today_date}\\need 目录下的文档\n\t请输入：')
    if len(word_path):
        pass
    else:
        word_path = need_path

    word_list = []  # 用来存储所有的word文件路径
    if os.path.isfile(word_path):  # 如果是文件
        if word_path.endswith('.doc') or word_path.endswith('.docx'):
            word_list.append(word_path)
    else:
        for current_folder, list_folders, files in os.walk(word_path):
            for f in files:  # 用来遍历所有的文件，只取文件名，不取路径名
                if f.endswith('doc') or f.endswith('docx'):  # 判断word文档
                    word_list.append(current_folder + '\\' + f)  # 把路径添加到列表中

    return word_list  # 返回这个word文档的路径



def get_save_path():
    save_path = input(f'【二、设置文档处理后的保存路径】\n\t请输入目录的绝对路径，用来保存处理后的文档\n\t或者按下回车键，我将会把处理好的文档保存在此项目的 document\\{today_date}\\completed 目录下\n\t或者输入 1 ，我将会把处理好的文档放在桌面上的 【doc处理结果】文件夹中\n\t请输入：')
    if len(save_path):
        if save_path == '1':
            desktop_path = os.path.join(os.path.expanduser("~"), 'Desktop')  # 获取桌面路径
            save_path = os.path.join(desktop_path, 'doc处理结果')
            os.makedirs(save_path, exist_ok=True)
        else:
            pass
    else:
        save_path = completed_path

    return save_path




# 用户选择的转换模式
def choice():
    num_list = ['1', '2']
    a = 1
    print('请选择转换模式：')
    while a:
        print('doc转docx请输入：\t1')
        print('docx转doc请输入：\t2')
        user_choice = input('我选择：')
        if user_choice in num_list:
            a = 0
            return user_choice
        else:
            print('请输入正确的选项')








if __name__ == '__main__':
    logger.info('-------------------【开始运行】------------------')
    # 输入文档绝对路径，可以是目录 也可以是文件
    word_path_list = getfile()
    logger.info(f'获取的文件列表：{word_path_list}')

    # 处理完成后的保存路径
    save_path = get_save_path()

    # 选择模式
    user_choice = choice()

    if user_choice == '1':
        doc2docx(word_path_list, save_path)

    if user_choice == '2':
        docx2doc(word_path_list, save_path)

    logger.info('----------------【本次全部转换完毕】----------------')
    print('本次全部转换完毕')